Builder Pattern은 단순하게 개별 객체의 생성을 별도의 클래스에 위임한다.
struct HtmlBuilder{
HtmlElement root;
HtmlBuilder(string root_name){ root.name=root_name; }
void add_child(strin child_name, string child_text){
HtmlElement e{child_name, child_text};
root.elements.emplace_back(e);
}
string str(){ return root.str(); }
};
HtmlBuilder builder{"ul"};
builder.add_child("li", "hello");
builder.add_child("li", "world");
cout<<builder.str()<<endl;
add_child() 메서드의 리턴값을 활용하면 좀 더 편리한
흐름식 인터페이스(fluent interface) 스타일의 빌더를 만들 수 있다.